package jsd2302.src.io;

import java.io.*;

/**
 * 对象流：高级流/处理流
 * ObjectInputStream和ObjectOutputStream
 * 作用：进行对象的序列化和反序列化
 * 对象序列化：将一个java对象转化为一组字节的过程成为对象序列化
 * 反序列化：将一组字节还原为Java对象
 */
public class OOSDemo {
    public static void main(String[] args) throws IOException {

        /*
        String name="张三";
        int age=25;
        String gender="男";
        String[] otherInfo={"是一名学生","黑龙江","喜欢打篮球"};
        Student zs=new Student(name,age,gender,otherInfo);
        System.out.println(zs);

         */
        String name="张三";
        int age=25;
        String gender="男";
        String[] otherInfo={"是一名军人","保家卫国"};
        Student zs=new Student(name,age,gender,otherInfo);
        System.out.println(zs);
/**
 * 对象输出流在序列化对象时需要保证序列化对象必须实现Serializable接口
 * 若没有实现序列化接口会发生Not
 */
       /*
        FileOutputStream fos=new FileOutputStream("student.obj");
        ObjectOutputStream oos=new ObjectOutputStream(fos);
        oos.writeObject(zs);
        System.out.println("写出完毕");
        oos.close();
        */
        FileOutputStream fos=new FileOutputStream("student.obj");
        ObjectOutputStream oos=new ObjectOutputStream(fos);
        oos.writeObject(zs);
        System.out.println("写出完毕！");
        oos.close();
    }
}
